#include<stdio.h>
/**
 * 如何通过指针访问结构体成员。
 * 一般建议使用这种方式，因为如果在函数中传递结构体会增大很多内存的开销，不建议使用，传递指针则不存在这种问题，因为变量是在堆中开辟。
*/
struct Date
{
    int year;
    int month;
    int day;
};

struct Book
{
    char title[50];
    char author[50];
    float price;
    struct Date date;
};

struct Book getInput(struct Book *book);
void printbook(struct Book *book);
struct Book getInput(struct Book *book)
{
    printf("请输入书名:");
    scanf("%s",book->title);
    printf("请输入作者：");
    scanf("%s",book->author);
    printf("请输入价格");
    scanf("%f",&book->price);
    printf("请输入日期");
    scanf("%d-%d-%d",&book->date.year,&book->date.month,&book->date.day);
}

void printbook(struct Book *book)
{
    printf("******************************");
    printf("书名：%s\n",book->title);
    printf("作者：%s\n",book->author);
    printf("价格：%f\n",book->price);
    printf("日期：%d-%d-%d\n",book->date.year,book->date.month,book->date.day);
    printf("******************************\n");

}

int main(void)
{
    struct Book *b1;
    printf("请输入第一本书的信息...\n");
    getInput(b1);
    printbook(b1);
    return 0;

}